package com.hy.demo.learn.java基础类库.Runtime类;

/**
 * <p>
 * Runtime类测试  单例模式 有且只有一个对象，交予cpu维护
 * </p>
 *
 * @author cjl
 * @version 1.0
 * @since 2020-08-27 16:00
 */
public class RunTimeTest {

    public static void main(String[] args) throws InterruptedException {
        Runtime runtime=Runtime.getRuntime();

        // 通过runtime的availableProcessors方法可以获取到当前主机的cpu内核数
        //System.out.println(runtime.availableProcessors());

        // 除去上面方法之外，还有4个重要的操作方法
        // 1.获取最大可用内存 public long maxMemory()  默认配置本机系统内存的1/4
        // 2.获取可用内存空间 public long totalMemory() 默认配置本机系统内存的1/64
        // 3.获取空闲内存空间 public long freeMemory()
        // 4.手工进行GC处理  public void gc()


        // 实例
        System.out.println("[1]最大可用内存"+runtime.maxMemory());
        System.out.println("[1]可用内存空间"+runtime.totalMemory());
        System.out.println("[1]空闲内存空间"+runtime.freeMemory());
        
        
        String str="";
        for (int i = 0; i <30000 ; i++) {
            str=str+i;
        }

        System.out.println("[2]最大可用内存"+runtime.maxMemory());
        System.out.println("[2]可用内存空间"+runtime.totalMemory());
        System.out.println("[2]空闲内存空间"+runtime.freeMemory());

        Thread.sleep(2000);
        // 手工GC
        runtime.gc();

        System.out.println("[3]最大可用内存"+runtime.maxMemory());
        System.out.println("[3]可用内存空间"+runtime.totalMemory());
        System.out.println("[3]空闲内存空间"+runtime.freeMemory());
    }
}
